Как найти ширину div, используя ванильный JavaScript? - PullRequest
232 голосов
/ 25 января 2011

Как найти текущую ширину <div> кросс-браузерно-совместимым способом без с использованием библиотеки, такой как jQuery?

Ответы [ 8 ]

345 голосов
/ 25 января 2011
document.getElementById("mydiv").offsetWidth
33 голосов
/ 03 ноября 2014

Вы можете использовать clientWidth или offsetWidth Ссылка на сеть разработчика Mozilla

Это будет выглядеть так:

document.getElementById("yourDiv").clientWidth; // returns number, like 728

или с шириной границ:

document.getElementById("yourDiv").offsetWidth; // 728 + borders width
8 голосов
/ 10 июля 2016

Все ответы правильные, но я все же хочу дать некоторые другие альтернативы, которые могут работать.

Если вы ищете заданную ширину (игнорируя отступы, поля и т. Д.), Вы можете использовать.

getComputedStyle(element).width; //returns value in px like "727.7px"

getComputedStyle позволяет вам получить доступ ко всем стилям этих элементов. Например: padding, paddingLeft, margin, border-top-left-radius и т. Д.

3 голосов
/ 12 сентября 2014

Вы также можете искать DOM, используя ClassName. Например:

document.getElementsByClassName("myDiv")

Это вернет массив. Если есть интересующее вас конкретное свойство. Например:

var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth;

divWidth теперь будет равно ширине первого элемента в вашем массиве div.

1 голос
/ 07 октября 2017

На самом деле вам не нужно использовать document.getElementById("mydiv").
Вы можете просто использовать идентификатор div, например:

var w = mydiv.clientWidth;
или
var w = mydiv.offsetWidth;
и т.д.

0 голосов
/ 29 апреля 2019

Другой вариант - использовать функцию getBoundingClientRect.Обратите внимание, что getBoundingClientRect вернет пустой прямоугольник, если для элемента отображается значение none

0 голосов
/ 28 марта 2018

Правильный способ получения вычисленного стиля - ожидание, пока страница не будет отображена. Это можно сделать следующим образом. Обратите внимание на время ожидания при получении значений auto.

function getStyleInfo() {
    setTimeout(function() {
        const style = window.getComputedStyle(document.getElementById('__root__'));
        if (style.height == 'auto') {
            getStyleInfo();
        }
        // IF we got here we can do actual business logic staff
        console.log(style.height, style.width);
    }, 100);
};

window.onload=function() { getStyleInfo(); };

Если вы используете просто

window.onload=function() {
    var computedStyle = window.getComputedStyle(document.getElementById('__root__'));
}

вы можете получить auto значений ширины и высоты, потому что браузеры не рендерится до полной загрузки.

0 голосов
/ 12 июня 2015

вызов метода ниже для тега div или body onclick = "show (event);" функция show (событие) {

        var x = event.clientX;
        var y = event.clientY;

        var ele = document.getElementById("tt");
        var width = ele.offsetWidth;
        var height = ele.offsetHeight;
        var half=(width/2);
       if(x>half)
        {
          //  alert('right click');
            gallery.next();
        }
        else
       {
           //   alert('left click');
            gallery.prev();
        }


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...